package com.dkd.sbtz.mapper;

import java.util.List;
import java.util.Map;

import com.dkd.sbtz.domain.Sbtype;
import com.dkd.sbtz.domain.vo.sbtype.TypeRelation;
import org.apache.ibatis.annotations.Param;

/**
 * 设备类型Mapper接口
 * 
 * @author xzj
 * @date 2025-09-02
 */
public interface SbtypeMapper 
{
    /**
     * 查询设备类型
     * 
     * @param typeCode 设备类型主键
     * @return 设备类型
     */
    public Sbtype selectSbtypeByTypeCode(String typeCode);

    /**
     * 查询设备类型列表
     * 
     * @param sbtype 设备类型
     * @return 设备类型集合
     */
    public List<Sbtype> selectSbtypeList(Sbtype sbtype);

    // 批量查多个 typeCode 的父/子关系
    List<TypeRelation> selectTypeRelationsBatch(@Param("typeCodes") List<String> typeCodes);
    /**
     * 新增设备类型
     * 
     * @param sbtype 设备类型
     * @return 结果
     */
    public int insertSbtype(Sbtype sbtype);

    /**
     * 修改设备类型
     * 
     * @param sbtype 设备类型
     * @return 结果
     */
    public int updateSbtype(Sbtype sbtype);


    public int updateDeviceCount(Sbtype sbtype);

    /**
     * 删除设备类型
     * 
     * @param typeCode 设备类型主键
     * @return 结果
     */
    public int deleteSbtypeByTypeCode(String typeCode);

    /**
     * 批量删除设备类型
     * 
     * @param typeCodes 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteSbtypeByTypeCodes(String[] typeCodes);

    int existsEdge(@Param("parentType") String parentType,
                   @Param("childType") String childType);


    int deleteByParentType(@Param("parentType") String parentType);

    int insertBatch(@Param("parentType") String parentType,
                    @Param("childTypes") List<String> childTypes,
                    @Param("username") String username);

    int deleteByChild(@Param("childType") String childType);

    int insertParentBatch(@Param("childType") String childType,
                    @Param("parentTypes") List<String> parentTypes,
                    @Param("createBy") String createBy);

    int deleteEdgesByTypeCodes(@Param("typeCodes") String[] typeCodes);






}
